perm filename EPARSE.HDI[EAL,HE] blob
sn#704686 filedate 1983-03-30 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 1) EPARSE.HDR[EAL,HE] and 2) ALHDR.2[EAL,HE] 3-30-83 12:02 pages 1,1
C00010 00003
C00013 00004
C00019 00005
C00021 00006
C00026 00007
C00030 00008
C00032 ENDMK
C⊗;
1) EPARSE.HDR[EAL,HE] and 2) ALHDR.2[EAL,HE] 3-30-83 12:02 pages 1,1
**** File 1) EPARSE.HDR[EAL,HE]/1P/1L
1) (* Header file for EEXPAR and EPAR3x with x = A,B,D,E,F *)
1) const
1) (* Constants from EDIT *)
**** File 2) ALHDR.2[EAL,HE]/1P/1L
2) (* The following bits are used during calls to the ARM servo *)
2) const
2) YARMDEV = 1; (* device numbers *)
2) YHANDDEV = 2;
2) BARMDEV = 3;
2) BHANDDEV = 4;
2) VISEDEV = 5;
2) DRIVERDEV = 6;
2) GARMDEV = 7;
2) GHANDDEV = 8;
2) RARMDEV = 9;
2) RHANDDEV = 10;
2) YELARM = 1B; (* Yellow arm *)
2) BLUARM = 4B; (* Blue arm *)
2) FTABLE = 400B; (* Force trans (C) in table coordinates *)
2) FHAND = 0B; (* " " " " hand coordinate system *)
2) XFORCE = 0B; (* Force along X direction of C *)
2) YFORCE = 1000B; (* " " Y " " " *)
2) ZFORCE = 2000B; (* " " Z " " " *)
2) XMOMENT = 3000B; (* Moment about X direction of C *)
2) YMOMENT = 4000B; (* " " Y " " " *)
2) ZMOMENT = 5000B; (* " " Z " " " *)
2) FSTOP = 10000B; (* In addition to starting cmon, stop arm *)
2) SIGMAG = 20000B; (* Test only magnitude of forces *)
2) SIGGE = 100000B; (* Start cmon if force ≥ specified value *)
2) SIGLT = 0B; (* " " " " < " " *)
2) barmpower = 1B; (* bit defs - used in response to initarmscmd *)
2) yarmpower = 2B;
2) garmpower = 4B;
2) rarmpower = 10B;
2) garmcal = 400B;
2) rarmcal = 1000B;
2) nullingcb = 1B; (* control bits for trajectory specs *)
2) wobblecb = 2B;
2) durlbcb = 20B; (* Duration: lower, upper & exact bounds *)
2) durubcb = 40B;
2) dureqcb = 60B;
2) veloccb = 100B;
2) codecb = 200B;
2) viaptcb = 400B;
2) deprptcb = 1000B;
2) apprptcb = 2000B;
2) destptcb = 10000B;
2) (* Constants from EDIT *)
***************
**** File 1) EPARSE.HDR[EAL,HE]/3P/11L
1) strngp = ↑strng;
1) statementp = ↑statement;
**** File 2) ALHDR.2[EAL,HE]/3P/11L
2) vectorp = ↑vector;
2) transp = ↑trans;
2) strngp = ↑strng;
2) eventp = ↑event;
2) framep = ↑frame;
2) statementp = ↑statement;
***************
**** File 1) EPARSE.HDR[EAL,HE]/3P/17L
1) pdbp = ↑pdb;
1) reswordp = ↑resword;
1) linerecp = ↑linerec;
1) cursorpp = ↑cursorp; {Ron's style, not mine}
1) (* This one is used whenever a pointer is needed for which the *)
1) (* definition is missing from this file; naturally, all *)
1) (* pointers use the same space *)
1) dump = ↑integer;
1) (* datatype definitions *)
**** File 2) ALHDR.2[EAL,HE]/3P/21L
2) reswordp = ↑resword;
2) pdbp = ↑pdb;
2) envheaderp = ↑envheader;
2) enventryp = ↑enventry;
2) environp = ↑environment;
2) cmoncbp = ↑cmoncb;
2) messagep = ↑message;
2) linerecp = ↑linerec;
2) cursorpp = ↑cursorp; {Ron's style, not mine}
2) (* the following get used for misc record types - i.e. we fake out Pascal's type
2) checking mechanism *)
2) s4p = ↑s4;
2) s4 = record next: s4p; filler: array [1..3] of integer; end;
2) s8p = ↑s8;
2) s8 = record next: s8p; filler: array [1..7] of integer; end;
2) s11p = ↑s11;
2) s11 = record next: s11p; filler: array [1..10] of integer; end;
2) (* datatype definitions *)
***************
**** File 1) EPARSE.HDR[EAL,HE]/4P/10L
1) cstring = packed array [1..10] of ascii;
**** File 2) ALHDR.2[EAL,HE]/4P/10L
2) u = (used,free);
2) vector = record case u of
2) used: (refcnt: integer; val: array [1..3] of real);
2) free: (next: vectorp);
2) end;
2) trans = record case u of
2) used: (refcnt: integer; val: array [1..3,1..4] of real);
2) free: (next: transp);
2) end;
2) cstring = packed array [1..10] of ascii;
***************
**** File 1) EPARSE.HDR[EAL,HE]/5P/1L
1) (* statement definitions *)
**** File 2) ALHDR.2[EAL,HE]/4P/33L
2) event = record
2) next: eventp; (* all events are on one big list *)
2) count: integer;
2) waitlist: pdbp;
2) end;
2) frame = record
2) vari: varidefp; (* back pointer to variable name & info *)
2) calcs: nodep; (* affixment info *)
2) case ftype: boolean of (* frame = true, device = false *)
2) true: (valid: integer; val, fdepr: transp; dcntr: integer; dev: framep);
2) false: (mech: integer; case sdev: boolean of
2) true: (sdest: real); false: (tdest,appr,depr: transp));
2) (* sdev = true for scalar devices, false for frames *)
2) end;
2) (* statement definitions *)
***************
**** File 1) EPARSE.HDR[EAL,HE]/7P/46L
1) vectype: (v: dump);
1) transtype: (t: dump);
1) strngtype: (length: integer; str: strngp) ); (* also used by commentnodes *)
1) deprnode,
**** File 2) ALHDR.2[EAL,HE]/7P/46L
2) vectype: (v: vectorp);
2) transtype: (t: transp);
2) strngtype: (length: integer; str: strngp) ); (* also used by commentnodes *)
2) listnode: (lval: nodep);
2) clistnode: (cval: integer; stmnt: statementp; clast: nodep);
2) colistnode: (prev: nodep; cstmnt: statementp);
2) forvalnode: (fvar: enventryp; fstep: scalar);
2) arrivalnode:(evar: varidefp);
2) deprnode,
***************
**** File 1) EPARSE.HDR[EAL,HE]/7P/52L
1) arrivalnode:(evar: varidefp);
1) viaptnode: (vlist: boolean; via,duration,velocity: nodep; vcode: statementp);
1) durnode: (durrel: reltypes; durval: nodep);
1) swtnode: (clval: nodep);
1) ffnode: (ff: nodep; csys, pdef: boolean); (* true = world, false = hand *)
1) gathernode: (gbits: integer);
1) cwnode: (notp: boolean); (* true = nonulling/zero wrist/counter_clockwise *)
1) forcenode: (ftype: forcetypes; frel: reltypes; fval, fvec, fframe: nodep);
1) stiffnode: (fv, mv, coc: nodep);
1) listnode: (lval: nodep);
1) clistnode: (cval: integer; stmnt: statementp; clast: nodep);
1) colistnode: (prev: nodep; cstmnt: statementp);
1) forvalnode: (fvar: dump; fstep: scalar);
1) cmonnode: (cmon: statementp; errhandlerp: boolean);
1) errornode: (eexpr: nodep);
1) arraydefnode: (numdims: 1..10; bounds: nodep; combnds: boolean);
**** File 2) ALHDR.2[EAL,HE]/7P/57L
2) viaptnode: (vlist: boolean; via,duration,velocity: nodep; vcode: statementp);
2) durnode: (durrel: reltypes; durval: nodep);
2) sfacnode,
2) wobblenode,
2) swtnode: (clval: nodep);
2) nullingnode,
2) wristnode,
2) cwnode: (notp: boolean); (* true = nonulling/don't zero wrist/counter_clockwise *)
2) ffnode: (ff: nodep; csys, pdef: boolean); (* true = world, false = hand *)
2) forcenode: (ftype: forcetypes; frel: reltypes; fval, fvec, fframe: nodep);
2) stiffnode: (fv, mv, coc: nodep);
2) gathernode: (gbits: integer);
2) cmonnode: (cmon: statementp; errhandlerp: boolean);
2) errornode: (eexpr: nodep);
2) calcnode: (rigid, frame1: boolean; other: framep; case tvarp: boolean of
2) false: (tval: transp); true: (tvar: enventryp) );
2) arraydefnode: (numdims: 1..10; bounds: nodep; combnds: boolean);
***************
**** File 1) EPARSE.HDR[EAL,HE]/7P/70L
1) procdefnode:(ptype: datatypes; level: 0..255;
1) pname, paramlist: varidefp; body: statementp);
1) end;
**** File 2) ALHDR.2[EAL,HE]/7P/76L
2) waitlistnode: (who: pdbp; when: integer);
2) procdefnode:(ptype: datatypes; level: 0..255;
2) pname, paramlist: varidefp; body: statementp);
2) tlistnode: (tok: tokenp);
2) dimnode: (time, distance, angle, dforce: integer);
2) end;
***************
**** File 1) EPARSE.HDR[EAL,HE]/9P/12L
1) env: dump;
1) spc: statementp; (* current statement *)
**** File 2) ALHDR.2[EAL,HE]/9P/12L
2) env: envheaderp;
2) spc: statementp; (* current statement *)
***************
**** File 1) EPARSE.HDR[EAL,HE]/9P/16L
1) cm: dump; (* if we're a cmon point to our definition *)
1) mech: dump; (* current device being used *)
1) linenum: integer; (* used by editor/debugger *)
**** File 2) ALHDR.2[EAL,HE]/9P/16L
2) cm: cmoncbp; (* if we're a cmon point to our definition *)
2) mech: framep; (* current device being used *)
2) linenum: integer; (* used by editor/debugger *)
***************
**** File 1) EPARSE.HDR[EAL,HE]/9P/22L
1) false: (evt: dump; (* event to signal when process goes away *)
1) sdef: statementp); (* first statement where process was defined *)
1) end;
1) (* print related records: *)
**** File 2) ALHDR.2[EAL,HE]/9P/22L
2) false: (evt: eventp; (* event to signal when process goes away *)
2) sdef: statementp); (* first statement where process was defined *)
2) end;
2) envheader = packed record
2) parent: envheaderp;
2) env: array [0..4] of environp;
2) varcnt: 0..255; (* # of variables in use ??? *)
2) case procp: boolean of (* true if we're a procedure *)
2) true: (proc: nodep);
2) false:(block: statementp);
2) end;
2) enventry = record
2) case etype: datatypes of
2) svaltype: (s: scalar);
2) vectype: (v: vectorp);
2) transtype: (t: transp);
2) frametype: (f: framep);
2) eventtype: (evt: eventp);
2) strngtype: (length: integer; str: strngp);
2) cmontype: (c: cmoncbp);
2) proctype: (p: nodep; penv: envheaderp);
2) reftype: (r: enventryp);
2) arraytype: (a: envheaderp; bnds: nodep);
2) end;
2) environment = record
2) next: environp;
2) vals: array [0..9] of enventryp;
2) end;
2) cmoncb = record
2) running, enabled: boolean; (* cmon's status *)
2) cmon: statementp;
2) pdb: pdbp;
2) evt: eventp;
2) fbits: integer; (* bits for force sensing *)
2) oldcmon: cmoncbp; (* for debugger *)
2) end;
2) (* definition of AL-ARM messages *)
2) msgtypes = (initarmscmd,calibcmd,killarmscmd,wherecmd,
2) abortcmd,stopcmd,movehdrcmd,movesegcmd,
2) centercmd,operatecmd,movedonecmd,signalcmd,readjtcmd,drivecmd,
2) setccmd,forcesigcmd,forceoffcmd,biasoncmd,biasoffcmd,setstiffcmd,
2) zerowristcmd,wristcmd,gathercmd,getgathercmd,readadccmd,writedaccmd,
2) errorcmd,floatcmd);
2) errortypes = (noerror,noarmsol,timerr,durerr,toolong,useopr,nosuchdev,featna,
2) unkmess,srvdead,adcdead,nozind,exjtfc,paslim,nopower,badpot,devbusy,
2) baddev,timout,panicb);
2) message = record
2) cmd: msgtypes;
2) ok: boolean;
2) case integer of
2) 1: (dev, bits, n: integer;
2) (* (dev, bits, n, evt: integer; (* for arm code version *)
2) evt: eventp;
2) dur: real;
2) case integer of
2) 1: (v1,v2,v3: real);
2) 2: (sfac,wobble,pos: real);
2) 3: (val,angle,mag: real);
2) 4: (max,min: real);
2) 5: (error: errortypes));
2) 2: (fv1,fv2,fv3,mv1,mv2,mv3: real); (* may never use these... *)
2) 3: (t: array [1..6] of real);
2) end;
2) interr = record
2) case integer of
2) 0: (i: integer);
2) 1: (err,foo: errortypes);
2) end;
2) (* print related records: *)
***************
**** File 1) EPARSE.HDR[EAL,HE]/11P/22L
1) (* filedepth: integer;
1) curpage: integer;
**** File 2) ALHDR.2[EAL,HE]/12P/22L
2) filedepth: integer;
2) curpage: integer;
***************
**** File 1) EPARSE.HDR[EAL,HE]/11P/31L
1) curErrhandler, curCmon: statementp; *)
1) d1: array[1..13] of dump;
1) endOfLine, backup, expandmacros, flushcomments, dimCheck: boolean;
1) (* semiseen, shownline: boolean;
1) eofError: boolean;
1) inMove,inCoblock: boolean; *)
1) d2,d3,d4,d5,d6: boolean;
1) curtoken: token;
**** File 2) ALHDR.2[EAL,HE]/12P/31L
2) curErrhandler, curCmon: statementp;
2) endOfLine, backup, expandmacros, flushcomments, dimCheck: boolean;
2) semiseen, shownline: boolean;
2) eofError: boolean;
2) inMove,inCoblock: boolean;
2) curtoken: token;
***************
**** File 1) EPARSE.HDR[EAL,HE]/11P/44L
1) curEnv, sysEnv: dump;
1) clkQueue: nodep;
1) allEvents: dump;
1) STLevel: integer;
1) etime: integer;
1) curtime: integer;
1) stime: integer;
1) msg: dump;
1) inputp: integer;
1) debugLevel: integer;
**** File 2) ALHDR.2[EAL,HE]/12P/42L
2) curEnv, sysEnv: envheaderp;
2) clkQueue: nodep;
2) allEvents: eventp;
2) STLevel: integer; (* set by GO *)
2) etime: integer; (* used by eval *)
2) curtime: integer; (* Time of day, in ticks *)
2) stime: integer; (* used for clock queue on 10 *)
2) msg: messagep; (* for AL-ARM interaction *)
2) inputp: integer; (* current offset into inputLine array above *)
2) debugLevel: integer;
***************
**** File 1) EPARSE.HDR[EAL,HE]/11P/79L
1) backUp: boolean;
1) eSingleThreadMode: boolean;
**** File 2) ALHDR.2[EAL,HE]/12P/77L
2) eBackup: boolean;
2) eSingleThreadMode: boolean;
***************
**** File 1) EPARSE.HDR[EAL,HE]/11P/85L
1) curToken: token;
1) (* Various device & variable pointers *)
1) speedfactor: dump;
1) barm: dump;
1) (* Various constant pointers *)
1) xhat,yhat,zhat,nilvect: dump;
1) niltrans: dump;
1) bpark, ypark, gpark, rpark: dump; (* arm park positions *)
**** File 2) ALHDR.2[EAL,HE]/12P/83L
2) eCurToken: token;
2) (* Various device & variable pointers *)
2) speedfactor: enventryp;
2) barm: framep;
2) (* Various constant pointers *)
2) xhat,yhat,zhat,nilvect: vectorp;
2) niltrans: transp;
2) bpark, ypark, gpark, rpark: transp; (* arm park positions *)
***************